package jscinttools.datafit.scint;
import jscinttools.datafit.scint.SpectrumFitFunc;
/**
 *  Description of the Interface
 *
 *@author     Marc-Antoine Verdier
 *@created    15 juin 2011
 */
public interface SpecFuncFactory
{
	/**
	 *  Setup the FitFunction as Amp_g0*exp(-((N-mu_g0)/(2*sig_g0))^2)+Amp_g1*exp(-((N-mu_g1)/(2*sig_g1))^2)+
	 *  ... and the parameters in this order:
	 *  Amp_g0,mu_g0,sig_g0,Amp_g1,mu_g1,sig_g1,...
	 *
	 *@return    SpectrumFitFunc
	 */
	public SpectrumFitFunc nGauss();


	/**
	 *  Setup the FitFunction as Amp_g*exp(-((N-mu_g)/(2*sig_g))^2)+Amp_m*(exp(-((N-mu_m)/sig_m+exp(-(N-mu_m)/sig_m))))
	 *  and the parameters in this order: Amp_g,mu_g,sig_g,Amp_m,mu_m,sig_m
	 *
	 *@return    SpectrumFitFunc
	 */
	public SpectrumFitFunc gaussMoyal();


	///**
	// *  Setup the FitFunction as Amp_g1*exp(-((N-mu_g1)/(2*sig_g1))^2)+Amp_g2*exp(-((N-mu_g2)/(2*sig_g2))^2)+Amp_m*(exp(-((N-mu_m)/sig_m+exp(-(N-mu_m)/sig_m))))
	// *  and the parameters in this order: Amp_g1,mu_g1,sig_g1,Amp_g2,mu_g2,sig_g2,Amp_m,mu_m,sig_m
	// *
	// *@return    SpectrumFitFunc
	// */
	//public SpectrumFitFunc twoGaussMoyal();
	//
	//
	///**
	// *  Setup the FitFunction as Amp_g1*exp(-((N-mu_g1)/(2*sig_g1))^2)+Amp_g2*exp(-((N-mu_g2)/(2*sig_g2))^2)+Amp_g3*exp(-((N-mu_g3)/(2*sig_g3))^2)+Amp_g4*exp(-((N-mu_g4)/(2*sig_g4))^2)+Amp_m*(exp(-((N-mu_m)/sig_m+exp(-(N-mu_m)/sig_m))))
	// *  and the parameters in this order: Amp_g1,mu_g1,sig_g1,Amp_g2,mu_g2,sig_g2,Amp_g3,mu_g3,sig_g3,Amp_g4,mu_g4,sig_g4,Amp_m,mu_m,sig_m
	// *
	// *@return    SpectrumFitFunc
	// */
	//public SpectrumFitFunc fourGaussMoyal();


	/**
	 *  Setup the FitFunction as Amp_g0*exp(-((N-mu_g0)/(2*sig_g0))^2)+Amp_g1*exp(-((N-mu_g1)/(2*sig_g1))^2)+
	 *  ...+ Amp_m*(exp(-((N-mu_m)/sig_m+exp(-(N-mu_m)/sig_m)))) and the parameters
	 *  in this order: Amp_g0,mu_g0,sig_g0,Amp_g1,mu_g1,sig_g1,...,Amp_m,mu_m,sig_m
	 *
	 *@return    SpectrumFitFunc
	 */
	public SpectrumFitFunc nGaussMoyal();


	/**
	 *  Setup the FitFunction as Amp_g0*exp(-((N-mu_g0)/(2*sig_g0))^2)+Amp_g1*exp(-((N-mu_g1)/(2*sig_g1))^2)+
	 *  ...+ Amp_m*(exp(-((N-mu_m)/sig_m+exp(-(N-mu_m)/sig_m))))+Amp_e*exp(-N/N_e)
	 *  and the parameters in this order: Amp_g0,mu_g0,sig_g0,Amp_g1,mu_g1,sig_g1,...,Amp_m,mu_m,sig_m,Amp_e,N_e
	 *
	 *@return    SpectrumFitFunc
	 */
	public SpectrumFitFunc nGaussMoyalExp();
}

